//效验身份证号码
export function isCardNo(card) {
  var pattern = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  return pattern.test(card);
}
//效验手机号码
export function isPhoneNo(phone) {
  var pattern = /^1[3456789]\d{9}$/;
  return pattern.test(phone);
}
//效验邮箱
export function isEmail(email) {
  var pattern = /\S+@\S+\.\S+/;
  return pattern.test(email);
}

//截取照片的格式后缀
export function getImgType(img) {
  var pattern = /\.[^\.]+$/;
  return pattern.exec(img)[0];
}

// 判断一个变量是字符串还是数字
export function isNumberOrString(str) {
  var pattern = /^[0-9]*$/;
  return pattern.test(str);
}

// 判断一个变量是字符串还是数字并在不同的数据类型时写不同的代码
export function isNumberOrString2(str) {
  var pattern = /^[0-9]*$/;
  if (pattern.test(str)) {
    console.log("是数字");
  } else {
    console.log("是字符串");
  }
}
//找出数组中的某一项
export function findArr(arr, key, value) {
  return arr.find((item) => item[key] === value);
}

//格式化时间
export function formatTime(time) {
  let date = new Date(time);
  let y = date.getFullYear();
  let m = date.getMonth() + 1;
  let d = date.getDate();
  return y + "-" + m + "-" + d;
}
//用例
// let time = new Date().getTime();
// console.log(formatTime(time)); // 2020-8-24

//生成一个由26位大小写字母和数字组成的随机数随机字符串,要求八位
export function randomString() {
  let str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  let result = "";
  for (let i = 0; i < 8; i++) {
    result += str[Math.floor(Math.random() * str.length)];
  }
  return result;
}

//监听滚动元素的滚动位置
/**
 * 监听滚动事件，并执行回调函数。
 * @param {HTMLElement} el - 要监听滚动事件的元素。
 * @param {Function} callback - 滚动事件回调函数，接收滚动条位置作为参数。
 */
export function listenScroll(el, callback) {
  el.addEventListener("scroll", function () {
    callback(el.scrollTop);
  });
}

//编写一个防抖函数
/**
 * 防抖函数，限制函数的执行频率
 * @param {Function} fn - 需要防抖的函数
 * @param {number} delay - 延迟时间，单位为毫秒
 * @returns {Function} - 防抖后的函数
 */
export function debounce(fn, delay) {
  var timer = null; // 声明计时器
  return function () {
    var context = this;
    var args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, delay);
  };
}

// 编写一个节流函数
/**
 * 节流函数，限制函数的执行频率
 * @param {Function} fn - 需要节流的函数
 * @param {number} interval - 间隔时间，单位为毫秒
 * @returns {Function} - 节流后的函数
 */
export function throttle(fn, interval) {
  var last = 0; // 上次执行的时间
  return function () {
    var context = this;
    var args = arguments;
    var now = Date.now(); // 当前时间
    if (now - last >= interval) {
      fn.apply(context, args);
      last = now;
    }
  };
}
